#! /bin/sh
# run this file as a shell script
mkdir fstests
chdir fstests
echo x - existfs
sed 's/^X//' >existfs <<'!Funky!Stuff!'
#!/bin/csh -f
set time=2
if ($#argv < 1) then
	echo "Usage: existfs name"
	exit 1
endif
echo "tests on $1"
/etc/dumpfs $1 | head -14 | tail -11
mkdir $1/fststs
if (! -e bin) then
	mkdir bin
	cc -o bin/write_4096 write_4096.c
	cc -o bin/write_8192 write_8192.c
	cc -o bin/rewrite_8192 rewrite_8192.c
	cc -o bin/read_8192 read_8192.c
endif
cp bin/write_4096 bin/write_8192 bin/rewrite_8192 bin/read_8192 $1/fststs
cd $1/fststs
echo "write_4096"
rm -f tst2
X./write_4096 tst2
rm -f tst2
X./write_4096 tst2
rm -f tst2
X./write_4096 tst2
echo "write_8192"
rm -f tst2
X./write_8192 tst2
rm -f tst2
X./write_8192 tst2
rm -f tst2
X./write_8192 tst2
echo "rewrite_8192"
X./rewrite_8192 tst2
X./rewrite_8192 tst2
X./rewrite_8192 tst2
echo "read_8192"
X./read_8192 tst2
X./read_8192 tst2
X./read_8192 tst2
echo "done"
!Funky!Stuff!
echo x - newtsts
sed 's/^X//' >newtsts <<'!Funky!Stuff!'
#!/bin/csh -f
set echo
set time=2
if ($#argv < 2) then
	echo "Usage: newtsts special disk-type"
	exit 1
endif
echo "8K/1K file system on $1 type $2"
/etc/newfs $1 $2
/etc/mount $1 /mnt
mkdir /mnt/fststs
if (! -e bin) then
	mkdir bin
	cc -o bin/write_4096 write_4096.c
	cc -o bin/write_8192 write_8192.c
	cc -o bin/rewrite_8192 rewrite_8192.c
	cc -o bin/read_8192 read_8192.c
endif
echo "write_4096"
rm -f /mnt/fststs/tst2
bin/write_4096 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_4096 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_4096 /mnt/fststs/tst2
echo "write_8192"
rm -f /mnt/fststs/tst2
bin/write_8192 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_8192 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_8192 /mnt/fststs/tst2
echo "rewrite_8192"
bin/rewrite_8192 /mnt/fststs/tst2
bin/rewrite_8192 /mnt/fststs/tst2
bin/rewrite_8192 /mnt/fststs/tst2
echo "read_8192"
bin/read_8192 /mnt/fststs/tst2
bin/read_8192 /mnt/fststs/tst2
bin/read_8192 /mnt/fststs/tst2
umount $1
sync
echo
echo "4K/1K file system on $1 type $2"
newfs $1 $2
mount $1 /mnt
mkdir /mnt/fststs
rm -f /mnt/fststs/tst2
bin/write_4096 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_4096 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_4096 /mnt/fststs/tst2
echo "write_8192"
rm -f /mnt/fststs/tst2
bin/write_8192 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_8192 /mnt/fststs/tst2
rm -f /mnt/fststs/tst2
bin/write_8192 /mnt/fststs/tst2
echo "rewrite_8192"
bin/rewrite_8192 /mnt/fststs/tst2
bin/rewrite_8192 /mnt/fststs/tst2
bin/rewrite_8192 /mnt/fststs/tst2
echo "read_8192"
bin/read_8192 /mnt/fststs/tst2
bin/read_8192 /mnt/fststs/tst2
bin/read_8192 /mnt/fststs/tst2
echo "done"
!Funky!Stuff!
echo x - read_8192.c
sed 's/^X//' >read_8192.c <<'!Funky!Stuff!'
#define	BUFSIZ 8192

main(argc, argv)
	int argc;
	char *argv[];
{
	char buf[BUFSIZ];
	int i, j;

	if (argc < 2) {
		printf("Usage: read_8192 file\n");
		exit(1);
	}
	j = open(argv[1], 0);
	if (j < 0) {
		perror(argv[1]);
		exit(2);
	}
	for (i = 0; i < 1024; i++)
		read(j, buf, BUFSIZ);
}
!Funky!Stuff!
echo x - readchk.c
sed 's/^X//' >readchk.c <<'!Funky!Stuff!'
#define BUFSIZ 4096

main(argc, argv)
	int argc;
	char *argv[];
{
	int buf[BUFSIZ / sizeof(int)];
	int i, j, k;

	if (argc != 2) {
		printf("Usage: readchk file\n");
		exit(1);
	}
	j = creat(argv[1], 0666);
	if (j < 0) {
		perror(argv[1]);
		exit(2);
	}
	for (i = 0; i < 2048; i++) {
		for (k = 0; k < BUFSIZ / sizeof(int); k++)
			buf[k] = i + k;
		if (write(j, buf, BUFSIZ) != BUFSIZ) {
			perror("write");
			exit(3);
		}
	}
	close(j);
	j = open(argv[1], 0);
	if (j < 0) {
		perror(argv[1]);
		exit(4);
	}
	for (i = 0; i < 2048; i++) {
		if (read(j, buf, BUFSIZ) != BUFSIZ) {
			perror("read");
			exit(5);
		}
		for (k = 0; k < BUFSIZ / sizeof(int); k++)
			if (buf[k] != i + k)
				printf("bad data at %d\n",
					tell(j) - BUFSIZ + 4 * k);
	}
}
!Funky!Stuff!
echo x - rewrite_8192.c
sed 's/^X//' >rewrite_8192.c <<'!Funky!Stuff!'
#define	BUFSIZ 8192

main(argc, argv)
	int argc;
	char *argv[];
{
	char buf[BUFSIZ];
	int i, j;

	if (argc < 2) {
		printf("Usage: rewrite_8192 file\n");
		exit(1);
	}
	j = open(argv[1], 2);
	if (j < 0) {
		perror(argv[1]);
		exit(2);
	}
	for (i = 0; i < 1024; i++)
		write(j, buf, BUFSIZ);
}
!Funky!Stuff!
echo x - write_4096.c
sed 's/^X//' >write_4096.c <<'!Funky!Stuff!'
#define	BUFSIZ 4096

main(argc, argv)
	int argc;
	char *argv[];
{
	char buf[BUFSIZ];
	int i, j;

	if (argc < 2) {
		printf("Usage: write_4096 file\n");
		exit(1);
	}
	j = creat(argv[1], 0666);
	if (j < 0) {
		perror(argv[1]);
		exit(2);
	}
	for (i = 0; i < 2048; i++)
		write(j, buf, BUFSIZ);
}
!Funky!Stuff!
echo x - write_8192.c
sed 's/^X//' >write_8192.c <<'!Funky!Stuff!'
#define	BUFSIZ 8192

main(argc, argv)
	int argc;
	char *argv[];
{
	char buf[BUFSIZ];
	int i, j;

	if (argc < 2) {
		printf("Usage: write_8192 file\n");
		exit(1);
	}
	j = creat(argv[1], 0666);
	if (j < 0) {
		perror(argv[1]);
		exit(2);
	}
	for (i = 0; i < 1024; i++)
		write(j, buf, BUFSIZ);
}
!Funky!Stuff!
